package org.maiyoframework.core.web.springmvc;

import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.StringUtils;

/**
 * 日期编辑器
 * 
 * 支持表单提交长日期(yyyy-MM-dd HH:mm:ss)或短日期(yyyy-MM-dd)格式
 * 
 * @author maiYo
 * 
 */
public class DateTypeEditor extends PropertyEditorSupport {
	
	public static final DateFormat LONG_DATE = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	public static final DateFormat SHORT_DATE = new SimpleDateFormat("yyyy-MM-dd");

	@Override
	public String getAsText() {
		Date value = (Date) getValue();
		return (value != null ? LONG_DATE.format(value) : "");
	}

	@Override
	public void setAsText(String text) throws IllegalArgumentException {
		if (StringUtils.isBlank(text)) {
			setValue(null);
			return;
		}
		try {
			if (text.length() <= 10) {// 判断是否提交的为短日期格式
				setValue(SHORT_DATE.parse(text));
			} else {
				setValue(LONG_DATE.parse(text));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
